/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package co.edu.senaclem.logica;

import co.edu.senaclem.modelo.Personal;
import co.edu.senaclem.persistencia.IPersonalDAO;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import org.apache.commons.codec.digest.DigestUtils;

/**
 *
 * @author anfeles
 */
@Stateless
public class PersonalLogica implements PersonalLogicaLocal {

    @EJB
    private IPersonalDAO personalDAO;

    @Override
    public Personal consultarPorId(Long documento) throws Exception {
        if(documento==null || documento==0){
            throw new Exception("La Identificación es Obligatoria!");
        }
        
        return personalDAO.consultarPorId(documento);
    }          
    
    @Override
    public List<Personal> consultar() throws Exception {
        return personalDAO.consultar();
    }

    @Override
    public void insertar(Personal personal) throws Exception {
        //validaciones
        if(personal==null) {
            throw new Exception("El Personal es Nulo!");
        }
        
        if(personal.getDocumento()==null || personal.getDocumento()==0) {
            throw new Exception("La Identificación es Obligatoria!");
        }
        
        if(personal.getNombre()==null || personal.getNombre().equals("")==true) {
            throw new Exception("El Nombre es Obligatorio!");
        }    
        
        if(personal.getApellido()==null || personal.getApellido().equals("")==true) {
            throw new Exception("El Apellido es Obligatorio!");
        }
        
        if(personal.getClave()==null || personal.getClave().equals("")==true) {
            throw new Exception("La Clave es obligatoria!");
        }
        
        //consulta si el personal ya existe
        Personal entity=personalDAO.consultarPorId(personal.getDocumento());
        if(entity!=null){
            throw new Exception("El Personal Ya Existe!"); 
        }    
        
        //se encripta la contraseña digitada
        String passEncriptado=encriptarContraseña(personal.getClave());
        personal.setClave(passEncriptado);
        
        personalDAO.insertar(personal);
    }
    
    @Override
    public void eliminar(Personal personal) throws Exception {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void modificar(Personal personal) throws Exception {
        //consulta si el personal ya Existe
        Personal entityPersonal=personalDAO.consultarPorId(personal.getDocumento());
        if(entityPersonal==null){
            throw new Exception("El Personal No Existe!"); 
        }
        //se envia el objeto entity a modificar porque es quien tiene el valor del instructor si existe
        entityPersonal.setNombre(personal.getNombre());
        entityPersonal.setApellido(personal.getApellido());
        entityPersonal.setCorreo(personal.getCorreo());
        entityPersonal.setTelefono(personal.getTelefono());
        
        //modificar
        personalDAO.modificar(entityPersonal);   
    }
    
    public String encriptarContraseña(String password) {
        String encriptMD5 = DigestUtils.md5Hex(password);
        //System.out.println("md5:" + encriptMD5);
        
        return encriptMD5;
    }

    @Override
    public boolean validarDatosPersonal(Personal personal) throws Exception {
        //validaciones
        if(personal==null) {
            return false;
        }
        
        if(personal.getDocumento()==null || personal.getDocumento()==0) {
            return false;
        }
        
        if(personal.getNombre()==null || personal.getNombre().equals("")==true) {
            return false;
        }    
        
        if(personal.getApellido()==null || personal.getApellido().equals("")==true) {
            return false;
        } 
                
        if(personal.getClave()==null || personal.getClave().equals("")==true) {
            return false;
        }
        
        return true;
    }
    
}
